Method for providing scale to align 3d objects in 2d environment

ABSTRACT

Example systems and methods for virtual visualization of a three-dimensional (3D) model of an object in a two-dimensional (2D) environment. The method may include projecting a ray from a user device to a ground plane and determining an angle at which the projected ray touches the ground plane. The method further helps determine a level for the ground plane for positioning the 3D model of the object in the 2D environment.

CROSS REFERENCE TO RELATED APPLICATIONS

The present application is a continuation of U.S. Non-Provisional patentapplication Ser. No. 17/001,657 entitled “METHOD FOR PROVIDING SCALE TOALIGN 3D OBJECTS IN 2D ENVIRONMENT”, filed on Aug. 24, 2020, which is acontinuation of U.S. Non-Provisional patent application Ser. No.16/244,021 entitled “METHOD FOR PROVIDING SCALE TO ALIGN 3D OBJECTS IN2D ENVIRONMENT”, filed on Jan. 9, 2019. U.S. Non-Provisional patentapplication Ser. No. 16/244,021 is a continuation of U.S.Non-Provisional patent application Ser. No. 14/710,554 entitled “METHODFOR PROVIDING SCALE TO ALIGN 3D OBJECTS IN 2D ENVIRONMENT”, filed on May12, 2015.

U.S. Non-Provisional patent application Ser. No. 14/710,554 is acontinuation-in-part of U.S. Non-Provisional patent application Ser. No.14/251,503 entitled “VISUALIZATION OF THREE-DIMENSIONAL MODELS OFOBJECTS IN TWO-DIMENSIONAL ENVIRONMENT”, filed on Apr. 11, 2014. U.S.Non-Provisional patent application Ser. No. 14/251,503 is acontinuation-in-part of U.S. Non-Provisional patent application Ser. No.13/552,658 entitled “VISUALIZATION OF THREE-DIMENSIONAL MODELS OFOBJECTS IN TWO-DIMENSIONAL ENVIRONMENT”, filed on Jul. 19, 2012. U.S.Non-Provisional patent application Ser. No. 13/552,658 claims priorityto U.S. Provisional Patent Application No. 61/660,730 entitled“VISUALIZATION OF THREE-DIMENSIONAL MODELS OF OBJECTS IN TWO-DIMENSIONALENVIRONMENT”, filed on Jun. 17, 2012. U.S. Non-Provisional patentapplication Ser. No. 14/710,554 also claims priority to U.S. ProvisionalPatent Application No. 61/992,759 entitled “METHOD FOR FORMING WALLS TOALIGN 3D OBJECTS IN 2D ENVIRONMENT”, filed on May 13, 2014. U.S.Non-Provisional patent application Ser. No. 14/710,554 also claimspriority to U.S. Provisional Patent Application No. 61/992,629 entitled“METHOD FOR PROVIDING SCALE TO ALIGN 3D OBJECTS IN 2D ENVIRONMENT”,filed May 13, 2014.

U.S. Non-Provisional patent application Ser. No. 14/710,554 claimsfurther priority to U.S. Provisional Patent Application No. 61/992,719entitled “METHOD FOR PROVIDING A PROJECTION TO ALIGN 3D OBJECTS IN 2DENVIRONMENT”, filed May 13, 2014. U.S. Non-Provisional patentapplication Ser. No. 14/710,554 claims further priority to U.S.Provisional Patent Application No. 61/992,774 entitled “METHOD FORMOVING AND ALIGNING 3D OBJECTS IN A PLANE WITHIN THE 2D ENVIRONMENT”,filed May 13, 2014. U.S. Non-Provisional patent application Ser. No.14/710,554 claims further priority to U.S. Provisional PatentApplication No. 61/992,746 entitled “METHOD FOR REPLACING 3D OBJECTS IN2D ENVIRONMENT”, filed May 13, 2014. U.S. Non-Provisional patentapplication Ser. No. 14/710,554 claims further priority to U.S.Provisional Patent Application No. 61/992,665 entitled “METHOD FORINTERACTIVE CATALOG FOR 3D OBJECTS WITHIN THE 2D ENVIRONMENT”, filed May13, 2014. The entire contents of each of the above-listed applicationsare hereby incorporated by reference for all purposes.

BACKGROUND AND SUMMARY

Interior design may involve developing and evaluating a design for aroom or environment. For example, a designer may wish to positionvarious objects, including furniture, lighting fixtures, and wallhangings, within a two-dimensional (2D) environment of an interior room.Conventional interior design tools may enable a user to position athree-dimensional (3D) model of an object by selecting the object, and“dragging and dropping” the object to a location in the 2D environmentusing a mouse, keyboard or other input device.

The inventors herein have recognized various issues with the abovemethods. Namely, although 3D objects may be positioned independentlywithin the 2D environment, it may be difficult to precisely align the 3Dobject relative to other objects already present in the 2D environment.For example, a user may want to place a table underneath and in verticalalignment with a light fixture. Using conventional methods, a user canmanually position an object to be in alignment with another object;however, manually aligning objects may be time-consuming and imprecise.

One approach that at least partially address the above issues mayinclude a method for placing a 3D object in a 2D environment,comprising, receiving an image of a 2D environment, calculating theposition for placing the 3D object in the 2D environment, receiving animage of a 3D object and positioning the 3D object in the 2D environmentbased on the calculated position.

Another example embodiment may include a method of placing a 3D objectin a 2D environment, comprising, capturing an image of the 2Denvironment with a mobile device, calculating the perspective and scalebased on an angle between a ground plane and a ray projected from themobile device and positioning the object in the 2D environment based onthe calculated object position.

It should be understood that the summary above is provided to introducein simplified form a selection of concepts that are further described inthe detailed description. It is not meant to identify key or essentialfeatures of the claimed subject matter, the scope of which is defineduniquely by the claims that follow the detailed description.Furthermore, the claimed subject matter is not limited toimplementations that solve any disadvantages noted above or in any partof this disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1A is a block diagram illustrating the overall system forvisualization of 3D models of objects in a 2D environment, in accordancewith various embodiments.

FIG. 1B is a schematic illustration of a system for visualization of 3Dmodel of objects in a 2D environment.

FIG. 2 is a block diagram showing various modules of an engine forvisualization of 3D models of objects in a 2D environment, in accordancewith various embodiments.

FIGS. 3A and 3B are example representations of the 2D environment with auser and a user device.

FIGS. 4A, 4B and 4C are example representations of the 2D environmentshown in FIG. 3.

FIGS. 5A, 5B, 5C, 5D, 5E, and 5F are example representations of placinga 3D object within the 2D environment shown in FIG. 3.

FIGS. 6A and 6B are example flowcharts for a method of placing an objectin a modeled 2D environment.

FIG. 7 illustrates an example of a computer network system, in whichvarious embodiments may be implemented.

DETAILED DESCRIPTION

The present description relates to visualization and adding of 3D modelsof objects to a 2D environment, wherein the 2D environment is a realenvironment represented by a photo or video. A user may importphotographic images, digital images, video images, and other graphicalrepresentations of the 2D environment. Further, the 2D environment mayinclude existing graphical materials or graphical materials captured asa still image or a live feed image. The 2D environment may serve as thebackground environment for adding a 3D model of an object.

The 3D object is associated with object information data which includesa defined set of parameters relevant to the 3D object. The parametersmay include attributes, instructions, and other such scripts associatedand essential for graphical use of the 3D object. Physical properties ofthe 3D object, interaction between object entities may be analyzed withsuch associated data. The object information data associated with the 3Dobject may include geometric attributes, depth value, color value, andsuch other properties. For example, geometric attributes of the 3Dobject, such as a chair, may include height and width information. If auser decides to place the chair near a table, already present in the 2Denvironment, the height and width information for the chair may help theuser in precise aligning.

The object information data may also include metadata encoding one ormore of a set of parameters relevant to the 3D object, manufacturer'sguidelines, regulations and guidelines governing the 3D object, safetyguidelines for the 3D object, and any other relevant informationspecific to the 3D object.

The object information data may include metadata defining the behaviorof the 3D object within the 2D environment. For example, a 3D object mayinclude metadata defining an object as one of a wall object, ceilingobject, floor object, or combination thereof. The metadata may furtherdefine the placement and movement of the object within the environment.

The object information data may also include metadata encoding aninformation tag. The information tag may include a description of the 3Dobject including dimensions, materials, cost, manufacturer, and otherinformation specific to the 3D object discussed below.

The object information data may also include metadata encoding graphicaldata, spatial data, and other rendering data for superimposing the 3Dobject within the 2D environment. Graphical, spatial, and rendering datamay be processed by a computing device to generate and display the 3Dobject to the user.

The parameters may include attributes, instructions, behaviorcharacteristics, visualizations to be displayed by the 3D object, andother such scripts associated and essential for graphical use of the 3Dobject. For example, the parameters may include, but are not limited to,the physical dimensions of the 3D object, mounting requirements for the3D object, metadata identifying the 3D object as a floor object, wallobject, ceiling object, or combination thereof, power requirements,length of a power cord, and any other relevant information describingthe 3D object.

Additionally, the object information data may include additionalparameters such as manufacturer's guidelines and/or safety guidelinesfor safe and proper installation and operation of the 3D object. Forexample, the object information data may include metadata encoding aminimum clearance or spatial requirement surrounding the 3D object. Theminimum clearance/spatial requirement may be required for adequateventilation of the 3D object, prevention of fire hazards, noise control,clearance of moving parts of the 3D object, or to satisfy any otherpersonal safety, medical safety, or industrial safety standard. As anexample, a display may require 6 inches clear from the cooling fangratings to allow for proper airflow to cool the electric internalswithin the display. As another example, in a medical application, amagnetic resonance imager may generate an electro-magnetic field in anarea surrounding the magnetic resonance imager that may interfere withother electrically powered or magnetically sensitive medical equipment,personal medical equipment such as a pacemaker, and any magneticmaterial that may be drawn to the magnetic resonance imager by magneticattraction. In an industrial application, some industrial equipment havemoving or rotating parts that may extend past the main body of the pieceof industrial equipment. Therefore, to allow for proper operation of theindustrial equipment, other equipment or objects may be located outsidea minimum clearance or spatial requirement surrounding the piece ofindustrial equipment.

In another example, in a restaurant environment, the tables, chairs, andother objects within the restaurant space may be required to be arrangedsuch that a minimum clearance surrounding each object is maintained andthat pathways for traversal are maintained clear and of sufficientdimensions to meet federal and local accommodation codes. Therefore,each chair and each table may include a minimum clearance or spatialrequirement surrounding the table or chair to meet the governingguidelines.

In another example, in a retail environment, retail display fixtures maybe arranged within the retail space such that a minimum clearancesurrounding each fixture may be maintained to allow shoppers to easilymove within the retail space and to meet federal and local accommodationcodes. In addition to satisfaction of the governing access codes, the 3Dmodels of the display fixtures and accompanying merchandise may bearranged within the 2D image of the retail space allowing retailplanners to efficiently design retail merchandising plans, design retailexhibit plans, and then electronically distribute the design plans tothe stores. Further, the retail merchandising teams at the stores maypropose amendments to the design plans that are specific to theavailable retail space within the store accounting for differences dueto the specific architectural design of the store space. Theseamendments may then be reviewed and approved by the retail planners,thereby providing an advantage of an efficient and electronic means ofdistributing, amending, and approving retail merchandising plans.

The object information data may be provided by multiple sources,including but not limited to, one or more of the manufacturer of the 3Dobject, government safety regulations such as provided by theOccupational Safety and Health Administration or other Federal or localgoverning body, federal and local accommodation codes such as theAmericans with Disabilities Act and federal, state, and local firecodes, the user may provide the object information data, objectinformation data may be downloaded from a remote data base, encoded byan asset manager or managing service providing the 3D objects, or anyother suitable means. It will be appreciated that the listed sources ofobject information data are not intended to be limiting.

In some embodiments, the object information data may include one or morespatial requirements. The spatial requirements may exceed the geometricdimensions of the 3D object and govern interactions between the 3Dobject and other object entities. The spatial requirements of a 3Dobject may be specific to the object based upon one or more of amanufacturer's recommendation, imported from a remote database,government regulation, configured by the user, or any other suitablesource.

In some embodiments, the two-dimensional environment may also includeenvironmental information data. The environmental information data mayinclude metadata which may encode one or more of a set of propertiesrelevant to the 2D environment, regulations and guidelines governing the2D environment such as governing access regulations, industrial safetystandards, and governing fire codes, safety guidelines for the 2Denvironment, and any other relevant information specific to the 2Denvironment. The properties encoded by environmental information datamay include one or more of the dimensions of the 2D environment,characteristics of the 2D environment governing the behavior andmovement of 3D objects within the 2D environment, locations of powersupplies and the voltage and frequency supplied, constructioninformation such as location of load bearing members, allowable loadinformation, construction materials, available ventilation, acousticinformation, fixed lighting sources, and any other information relevantto the two-dimensional environment.

The environmental information data may be provided by multiple sourcessuch as one or more of government safety regulations such as provided bythe Occupational Safety and Health Administration or other Federal orlocal governing body, federal and local accommodation codes such as theAmericans with Disabilities Act and federal, state, and local firecodes, the user may provide the object information data, objectinformation data may be downloaded from a remote data base, encoded byan asset manager or managing service providing the 3D objects, or anyother suitable means.

In these embodiments properties of the 2D environment may be retrievedfrom the environmental information data and analyzed to determineinteraction with 3D objects within the 2D environment. As a non-limitingexample, one or more threshold barriers between two planes of the 2Denvironment may be adjusted to satisfy one or more conditions encoded inthe metadata of both the environmental information data and the objectinformation data.

As the data associated with the 3D object is transferred to the 2Denvironment, the 3D object may be visualized in the 2D environment withrespect to scale and perspective of the 2D environment. The 2Denvironment including the 3D object may be referred to as a modeled 2Denvironment. Within the 2D environment, the user may move the 3D objectin a vertical direction, horizontal direction, or in a rotationalmanner. For example, if the 3D object is a wall painting, the user maymove the wall painting in a vertical or horizontal manner on a wallplane of the 2D environment; whereas, if the 3D object is a chair on aground plane of the 2D environment, the user may move the chair in ahorizontal or rotational manner.

A non-limiting example of a 3D object may be a display. The display maybe any of a television, monitor, computer monitor, or visual arrayincluding, but not limited to, a liquid crystal display (LCD), lightemitting diode (LED) display, organic light emitting diode (OLED)display, cathode based display, or any other display device capable ofproviding a visual image to a viewer. The display may be comprise any ofa plurality of shapes, such as square, rectangular, curved, round, orany suitable geometric shape. Further, the display may include a supportframe, may be frameless, or any other structural form factor known inthe art. The display may be a stand-alone display or one of a pluralityof display units comprising a composite display including multipledisplay units.

The scale and perspective of the 2D environment as mentioned above maybe obtained by the user with the help of user devices such as cell phoneand tablet PCs. Modern day mobile user devices are equipped with camerasand sensors. Modern day mobile devices such as cell phones and tabletPCs include a variety of sensors that help the user automate andcalculate both linear and angular dimensions. The sensors may includeaccelerometers, gyroscopes, compass, and so forth. Accelerometers inmobile user devices may be configured to detect the orientation of themobile device while the gyroscope adds information by tracking rotationof the device. While the accelerometer measures the linear accelerationof movement, the gyroscope measures the angular rotation and angularrotational velocity. Combining information from a three-axisaccelerometer and a three-axis gyroscope, the user may obtain accuratelinear and angular information.

The user may use the camera in the user device to project a light ray toreach the ground plane of the environment. The angle at which the lightray reaches the ground plane may be calculated with the help of thegyroscopic sensors present in the user devices. The light ray from thecamera lens, the height of the user device from the ground plane and thedistance between the point where the user and the user device arelocated to the point where the light ray reaches the ground plane, formsa virtual triangle. The user may add the user height, which in ourcurrent example is also the user device and camera lens height.Combining the information about the height of the camera lens from theground plane and the angle at which the light ray from the camera lensreaches the ground plane, the user may be calculate the distance betweenthe user device and the point at which the light ray reaches the groundplane. The user may use the distance calculated to place a 3D object inthe 2D environment. Additionally, if the 3D object position thusobtained is not satisfactory for the user, the user may use the cameralens of the user device to project another ray to another point on theground plane, and so forth.

The user may save the resulting image to a personal computer (PC) ornetwork database for future use or reference, or post the resultingimage on a social network, and perform other operations on the image.Further, the user may have some previously saved images which the usermay use to compare with the newly obtained images in order to selectpreferable combinations of a 3D object in a 2D background. The user mayuse his preferences before purchasing one or more 3D object for the 2Denvironment.

Additionally, the user may be connected to various social networkingservices and/or microblogs, such as Facebook™, Twitter™, and other suchnetworking services. Connection to social networking services and/ormicroblogs may allow user to interact with his contacts to share andobtain opinion and feedback on image obtained after placing 3D objectsin 2D environment. Further, the user may also request help fromdesigning services to arrange 3D objects within a given 2D environment.

Visualization and addition of 3D objects to any 2D environment providesample opportunities in various spheres of human life. Spatialrepresentation of 3D objects may help in comprehending and learning,designing and drafting, efficient space management, and accelerateddecision making and planning. The ability to represent virtual 3Dobjects in a real environment can provide further applications, such asselecting furniture for a house, designing kitchen cabinets, selectingdisplay and presentation equipment for conference rooms, presentationlayouts for tradeshow booths, industrial planning and industrialequipment placement, medical equipment placement, and other space anddesign applications.

FIG. 1A is a block diagram illustrating the overall system forvisualization of 3D models of objects in a 2D environment, in accordancewith various embodiments of the present application. FIG. 1B is aschematic illustration of a system for visualization of 3D models ofobjects in a 2D environment. FIG. 2 is a block diagram showing variousmodules of an engine for visualization of 3D models of objects in the 2Denvironment. FIGS. 3A and 3B are example representations of the 2Denvironment, including a user and a user device. FIGS. 4A, 4B and 4C arefurther example representations of the 2D environment shown in FIG. 3.FIGS. 5A, 5B and 5C are example representations of placing a 3D objectwithin the 2D environment shown in FIG. 3. FIGS. 6A and 6B are exampleflowcharts for a method of placing an object in the 2D environment. FIG.7 illustrates an example of a computer network system, in which variousembodiments may be implemented.

FIG. 1A illustrates a block diagram of an overall system 100 forvisualization of 3D objects in a 2D environment, in accordance withvarious embodiments of the present disclosure. Overall system 100 mayinclude a user 120, user devices 130, a user interface 140, an engine200 for virtual visualization of 3D models of objects in 2D environment,a network 202, and various web applications 204. The user devices 130may include a mobile phone 132, a personal computer (PC) 134, a personaldigital assistant (PDA) 136, a tablet PC 137, a wearable computer device138 such as Google Glass™ and Recon Jet™, a 3D scanner 139 and the like.The user 120 via user devices 130 interacts with the user interface 140.The user may also directly interact with the user interface viatouchscreen, keyboard, mouse key, touch pad and the like. The engine 200for visualization of 3D objects in 2D environment may comprise of localdevice-based, network-based, or web-based service available on any ofthe user devices 130. The user may further interact with the webapplications 204. The web applications may include social networkingservices.

The user 120 may interact with the user interface 140 via the userdevices 130. The system for virtual visualization of 3D models ofobjects in 2D environment 300 may be implemented on a local device orvia a network-based or web-based service accessible via user devices130. The user 120 may periodically interact with the system for virtualvisualization of 3D models of objects in 2D environment 300 via the userinterface 140 displayed using one of the user devices 130. Additionally,the user 120 may periodically interact with the web application 204 suchas a social networking service (including social networks, microblogs,web blogs, and other web resources) via the system for virtualvisualization of 3D models of objects in 2D environment 300 and thenetwork 110 to upload graphics obtained using the system for virtualvisualization of 3D models of objects in 2D environment 300, communicatewith members of the social networking service, or request help fromdesign services, or purchase a 3D object through web applications 204.

The user devices 130, in some example embodiments, may include aGraphical User Interface (GUI) for displaying the user interface 140. Ina typical GUI, instead of offering text menus or requiring typedcommands, the engine 200 may present graphical icons, visual indicators,or graphical elements called widgets that may be utilized to allow theuser 120 to interact with the user interface 140. The user devices 130may be configured to utilize icons in conjunction with text, labels, ortext navigation to fully represent the information and actions availableto users.

The network 202 may include the Internet or any other network capable ofcommunicating data between devices. Suitable networks may include orinterface with one or more of, for instance, a local intranet, aPersonal Area Network (PAN), a Local Area Network (LAN), a Wide AreaNetwork (WAN), a Metropolitan Area Network (MAN), a virtual privatenetwork (VPN), a storage area network (SAN), an Advanced IntelligentNetwork (AIN) connection, a synchronous optical network (SONET)connection, Digital Subscriber Line (DSL) connection, an Ethernetconnection, an Integrated Services Digital Network (ISDN) line, a cablemodem, an Asynchronous Transfer Mode (ATM) connection, or an FiberDistributed Data Interface (FDDI) or Copper Distributed Data Interface(CDDI) connection. Furthermore, communications may also include links toany of a variety of wireless networks, including Wireless ApplicationProtocol (WAP), General Packet Radio Service (GPRS), Global System forMobile Communication (GSM), Code Division Multiple Access (CDMA) or TimeDivision Multiple Access (TDMA), cellular phone networks, GlobalPositioning System (GPS), Cellular Digital Packet Data (CDPD), Researchin Motion (RIM), limited duplex paging network, bluetooth radio, or anIEEE 802.11-based radio frequency network. The network 202 may furtherinclude or interface with any one or more of an RS-232 serialconnection, an IEEE-1394 (Firewire) connection, a Fiber Channelconnection, an IrDA (infrared) port, a Small Computer Systems Interface(SCSI) connection, a Universal Serial Bus (USB) connection or otherwired or wireless, digital or analog interface or connection, mesh. Thenetwork 202 may be a network of data processing nodes that areinterconnected for the purpose of data communication.

FIG. 1B is a schematic illustration of a system for visualization of 3Dmodels of objects in a 2D environment. Specifically, as shown anddescribed in more detail herein, a 2D environment may be providedincluding a 2D image 260. The 2D image 260 may be a photograph, linedrawing or video. For example, the 2D image 260 may be a picture of aroom or part of a room. The 2D image 260 may be a personalized imagecaptured by a user's hand-held device or other computing device. Inother examples, the 2D image 260 may be saved or imported from a storagedevice on a remote server or other device.

Perspective and scale may be added to the 2D image 260. The perspectiveand scale may be saved as part of the image such that the 2D image isnow a combined image 262 having both the 2D information and perspectiveand scale information associated with the 2D image.

In some examples and as described in more detail herein, walls may beselectively positioned within the image. Further, in some examples, a 3Dobject may then be positioned within the 2D image with perspective andscale overlay, combined image 262. The 3D object may be realisticallypositioned within the resulting image 264 based on the perspective andscale overlay information. Further, the 3D object may be positionedwithin resulting image 264 such that the 3D object may be perceived inthree dimensions within the 2D environment.

FIG. 2 illustrates a block diagram for the engine for virtualvisualization of 3D models of objects in 2D environment 300. The enginefor virtual visualization of 3D models of objects in 2D environment 300may include a receiving module 206, an importing module 208, avisualizing module 210, an adding scale and perspective module 211, asuperimposing module 212, an object replacing module 214, a movingmodule 216, a modify object module 217, a spinning module 218, a savingmodule 224, an uploading module 226 and a purchasing module 228.

Although various modules of the engine for visualization of 3D models ofobjects in 2D environment 300 are shown together, the engine forvisualization of 3D models of objects in 2D environment 300 may beimplemented as a web service, via a distributed architecture, or withina cloud computing environment. The files created with this applicationmay contain perspective, scale and 3D model information in addition tothe 2D graphic background information. The files may be shared, or sentto, or opened on any user devices which may be configured to displaythese files.

The receiving module 206 may be configured to receive inputs from theuser 120 regarding an import request. The import requests may includeuser-specified data regarding a 2D environment, such that the 2Denvironment may be used as a background environment for displaying oneor more 3D models of objects. The importing module 208 may be configuredto import the 2D environment. The 2D environment may be a 2D photographof an interior space such as a living room, or a bedroom, or a kitchenspace, or a bathroom, or a garage, or an office space, and so forth.Additionally, the 2D environment may be a live video feed.

The visualizing module 210 may help the user 120 to visualize theimported 2D environment. The visualizing module 210 may be configured toreceive a superimposing request from the user 120. The superimposingrequest may include receiving object information data related to a 3Dobject.

In addition, the visualizing module 210 may be further configured toreceive a request for object replacement from the user. The objectreplacement request may include object information data or metadataencoding object information data including dimensions, or color, ormaterial type of the 3D object selected from the library of 3D objects.The received object replacement request is passed to the objectreplacing module 214, which changes the object, based on the request.Additionally, the selected 3D object may be replaced by the user 120with another 3D object. For example, the user may replace a large chairwith a small chair in a 2D environment after visualizing both the largechair and the small chair in the 2D environment.

The visualizing module 210 may further help the user 120 to alter viewsettings such as brightness or contrast of the imported 2D environment.Altering the brightness or contrast of the 2D environment may allow theuser to visualize the positioning of the 3D object in the 2D environmentunder more light or less light situations. For example, the user may beable to visualize and appreciate how the 3D object superimposed on the2D environment may look during day time versus night time conditions, orconditions of bright lighting or dim lighting where a lamp or lightfixture is being used. Additionally, the visualizing module 210 may alsohelp the user with directional options, such as a compass or a northfacing arrow to identify the orientation of the 2D environment. The usermay prefer to have directional options for personal reasons, oraesthetic preference, or for daylight requirements.

The visualizing module 210 may be further configured to receive scaledata (defining the scale of the 2D environment) and the perspective data(defining the perspective of the 2D environment) request from the user.The scale data and perspective data request is passed on to the addingscale and perspective module 211, which allows the user to adjust thescale and perspective of the 2D environment from a first displaycharacteristic including one or more of a first scale and a firstperspective to a second display characteristic including one or more ofa second scale and a second perspective.

The method then moves on to the moving module 216. The moving module 216may be configured to receive an object spinning request for rotationalmovement of the 3D object imported on to the 2D environment. Thespinning request thus received is passed on to the spinning module 218,which allows spinning or any such rotational movement of the 3D objectin the 2D environment. The object spinning request may include a requestto spin the 3D object about an axis of rotation of the 3D object from afirst rotational orientation to a second rotational orientation. Forexample, the 3D object inserted onto the 2D environment might be a chairor triangular table, and the user may prefer to precisely orient thechair seat in a particular direction or in case of the triangular table,the user may prefer to have the three corners of the table orient in acertain preferred directions.

As the user finalizes the appropriate color, material, positioning andspinning of the selected 3D object within the 2D environment, theresulting image may be uploaded to a social network website,microblogging service, blog or any other website resources by theuploading module 226. Thereby, the user 120 may receive inputs fromcontacts such as family members or friends regarding the resulting imageformed by the 3D object placement in the 2D environment. Withappropriate inputs, the user 120 may choose to alter the resulting imageof the 3D object in the 2D environment. In addition, based on userrequest, the saving module 224 may save the resulting image for futureuse or reference. Alternatively, the user 120 may be highly satisfiedwith the overall look of the 3D object in the 2D environment and decideto purchase the 3D object. In such a situation the purchasing request ispassed to the purchasing module, 228. In some embodiments, a contact ofthe user 120 via social networking websites in the web application 204,may request the user to purchase the 3D object in consideration.

FIG. 3A illustrates an example 2D room environment 300. The example 2Denvironment 300 may include an interior space bounded by a ground plane(e.g., a flooring surface) 304, walls 305, 306, 307 and 308, and includea floor lamp 318. The example 2D environment may include a user 120 anda user device 130. The user device 130 as shown in FIGS. 3A and 3B maybe any of the user devices discussed in FIG. 1, such as a tablet PC, acell phone, and so forth. The user 120 may use the user device 130 toobtain scale and perspective data for placing 3D objects in the 2Denvironment 300, as further described below. An X-axis line and a Y-axisline shown in FIG. 3A represents X-axis 340 and Y-axis 344 respectively.

Turning to now to FIG. 3B. The user device 130 may include a camera lens312 and sensors 314. Sensors 314 may include sensors such as agyroscope, or an accelerometer, or a compass and such others. Modern daymobile devices such as cell phones and tablet PCs include a variety ofsensors that automate and the user to calculate both linear and angulardimensions. The sensors 314 may include accelerometers configured todetect the orientation of the mobile device. The accelerometers may befurther configured to measure the linear acceleration of movement.

Additionally, the sensors 314 may include gyroscopes configured to addinformation by tracking rotation of the mobile device, user device 130.The gyroscopes may be further configured to measure angular rotation,velocity of angular rotation, lateral orientation and tilt of device.Combining information from accelerometers and gyroscopes, the user 120may obtain accurate linear and angular information.

As illustrated in FIG. 3B, a position Q1 marks the location of the userdevice 130. As the user device 130 is held at the position Q1, astraight line may be extended from the level 331 of the camera lens 312to the X-axis 340 on the ground plane 304 forming a right angle 320,marked by a point P1, representing a height 330 of the user devicerelative to the ground plane. The line may include the height 330 of thecamera lens 312 from the X-axis 340. The height 330 of the camera lensfrom the X-axis 340 may be the same as the height of the user 120 fromthe ground plane 304. A light ray line 322 may be projected from thecamera lens 312 to reach the X-axis 340 at a point P2, on the X-axis340. A distance 334 comprise of the distance between the point P1 andthe point P2 on the X-axis 340. The light ray line 322 from the cameralens 312 may be oriented to be perpendicular to the user device 130. Anangle 324 may be formed by the light ray line 322 from the camera lens312 and the X-axis 340.

The point P2 formed by the light ray line 322 indicates the positionalong X-axis 340, where the user 120 may place a 3D object. For the userto calculate the distance 334, the user may need to know the value ofthe angle 324. The sensors 314 in the user device 130 may be configuredto calculate the angle 324.

As known in the art, for a right angle triangle, H=hypotenuse,O=opposite side (opposite with respect to angle χ) and A=adjacent sideor base (adjacent with respect to angle χ); angle χ may be calculated asfollows:

tan χ=length of the opposite side (O)/length of the base or adjacentside (A)

In the example illustrated in FIG. 3B:

For χ=324; tan 324=height 330/distance 334.

Herein, the distance is the height 330 of the user device 130 from theground plane 304. As seen in FIG. 3A, the height of the device may bethe same as the height of the user 120. The user 120 may thereforeprovide the value of height 330 to the user device 130. With the angle324 calculated with the aid of the gyroscope sensors in the mobiledevice 310, and the height 330 provided by the user, the distance 334may be calculated. The distance 334 calculated may help the user 120 toplace the 3D object accurately with respect to the scale and perspectiveof the room.

Additionally, as illustrated in FIG. 3B, the user 120 may move the userdevice 130 from the position Q1 to a position Q2 and then to a positionQ3. As the user 120 moves the user device 130, the light ray line 322projected from the camera lens 312 may be deflected from reaching theX-axis at the point P2 to a point P3. A new light ray line 326 may beconfigured to represent the distance of the camera lens 312 from thepoint P3 on the X-axis 340. A distance 336 may comprise of the distancebetween the point P1 and the point P3 on the X-axis 340. An angle 328may be formed between the light ray line 326 and the distance 336 on theX-axis 340 at the point P3.

Further, the user 120 may move the user device 130 to the position Q3,such that the light ray line 322 projected from the camera lens 312 maybe deflected from reaching the X-axis at the point P2 to a point P4. Anew light ray line 342 may be configured to represent the distance ofthe camera lens 312 from the point P4 on the X-axis 340. A distance 338may comprise of the distance between the point P1 and the point P4 onthe X-axis 340. An angle 332 may be formed between the light ray line342 and the distance 338 on the X-axis 340 at the point P4.

As discussed above, for tan χ=length of the opposite side (O)/length ofthe base or adjacent side (A):

For χ=328; tan 328=height 330/distance 336

For χ=332; tan 324=height 330/distance 338

Therefore by adding the value for the height 330 of the user device 130from the ground plane 304 and calculating the value for the angle atwhich the ray from the camera lens 312 strikes the X-axis 340, variousposition coordinates for placing 3D objects in the 2D environment 300may be configured.

Turning now to FIGS. 4A, 4B and 4C. FIGS. 4A, 4B and 4C illustrate the2D environment 300 including a floor lamp 318 and further include alibrary 420. The library 420 may include a couch 422, a wall painting424, a step stool 426, a table 430, a small drawer 428, a chest ofdrawers 436, a center table 434 and a wall mirror 432. The library 420may include but not restricted to the items illustrated. Additionally,when the 3D object is selected, a menu bar may be displayed indicatingif the object selected is a floor object, a wall object or a ceilingobject. A finger icon 450 or other suitable indicator may be used toselect the 3D objects from the library 420 and superimpose onto the 2Denvironment 300. For example, as shown in FIG. 4A, the user 120 mayselect the step stool 426 from the library 420 to be placed in the 2Denvironment 300. With the help of the user device 130, the user maydecide to position the step stool 426.

As shown in FIG. 4B, the user may have the option of positioning thestep stool 426 at the point P2, or the point P3 or the point P4, alongthe X-axis 340 on the ground plane 304. The distance 334, the distance336 and the distance 338, are various distance options from the locationof the user device 130 at the point P1, for placing the step stool 426on the ground plane 304 in the 2D environment 300. As shown in FIG. 4B,the finger icon 450 or other suitable indicator identifies position P4as the user's choice to position the step stool 426 in the 2Denvironment 300.

FIG. 4C illustrates the final image of the 2D environment with the 3Dobject superimposed at point P4. The positioning of the step stool 426is based on the preference of the user 120 with the help of the userdevice 130 to determine the scale and perspective of the 2D environment300.

FIGS. 5A, 5B, 5C, 5D, 5E and 5F illustrate another embodiment for adding3D objects to the 2D environment 300. Beginning at FIG. 5A, a user mayprovide perspective and scale to 2D environment 300. The user may inputa device height using device height slider 540 and a ceiling heightusing ceiling height slider 550. Gridlines 542 may be added by the useror generated automatically. Gridlines 542 may indicate that perspectiveand scale data have been added to 2D environment 300. Further, a menu560 may be presented including one or more virtual button icons. The oneor more virtual button icons may include, but are not limited to, a helpvirtual button icon 562 configured to direct the user to a help menu ofthe application, a home virtual button icon 564 configured to direct theuser to an application home screen, a ceiling height virtual button icon566 configured to display ceiling height slider 550, a back virtualbutton icon 568 configured to direct the user to the previous action,application screen, or application function, and a next virtual buttonicon 570 configured to direct the user to the next application screen orfunction. It will be appreciated that the list of virtual button iconsand their respective function are provided as an illustrative exampleand are not limiting.

FIGS. 5B through 5F may include a library 520. The library 520 mayinclude a square display 522, an LED display 524, a rectangular display530, and curved display 532. As described above, the library 520 mayinclude but may not be restricted to the items illustrated. The 3Dobject may be an LED display, plasma display, a chair, a lamp, a desk, acouch, or any other suitable 3D object. Turning to FIG. 5A, a fingericon 550 or other suitable indicator may be used to select squaredisplay 522 from the library 520 and position square display 522 withinthe 2D environment 300. Finger icon 550 or other suitable indicator maybe used to position square display 522 on wall 306. Further, menu 560may present the user with a different selection of virtual button icons.In FIG. 5B, menu 560 includes help virtual icon button 562, home virtualicon button 564, a confirm walls virtual icon button 572 configured toenable the user to provide an input to confirm the location and spatialorientation of one or more walls within 2D environment 300 such as wall306, a hide products virtual button icon configured to hide 3D objectssuperimposed onto 2D environment 300 and/or 3D objects within library520, a done virtual button icon 576 configured to end the currentapplication process, such as once the user has positioned square display522 within 2D environment 300, the user may press done virtual buttonicon 576 to superimpose square display 522 onto 2D environment 300, andhide virtual button icon 578 configured to hide one or more of the 3Dobjects, library 520, menu 560, and/or indications of perspective andscale data added to the 2D environment. FIG. 5C illustrates squaredisplay 522 superimposed upon 2D environment 300.

Turning now to FIG. 5D, the user may define a three-dimensionalplacement grid by adding one or more rows using add row virtual buttonicon 590 and adding one or more columns using add column virtual buttonicon 586. The user may also remove one or more rows using remove rowvirtual button icon 588 and/or remove one or more columns using removecolumn virtual button icon 584. The user may also go back to animmediately preceding action, function, or application menu using backvirtual button icon 582.

As shown in FIG. 5D, visualizing module 210 may be configured to displayeach row and each column as shown. The rows and columns may be orientedto form the three-dimensional model placement grid. In this manner, eachintersection of a row and a column may indicate a unit location withinthe three-dimensional model placement grid. Each unit location withinthe three-dimensional placement grid may be sized to fit a 3D objectunit.

Additionally, the user may adjust the product height by providing aninput on product height slider 546. The height of the product from thebottom or floor plane may be measured along a line perpendicular tobottom or floor plane 304 from the bottom or floor plane 304 to thebottom of square display 522. In other embodiments, the height of squaredisplay 522 may be measured from the bottom or floor plane 304 to thetop of square display 522, from the bottom or floor plane 304 to thecenter of square display 522, or any other part of square display 522.Menu 560 may also display add products virtual button icon configured tosuperimpose additional 3D objects onto 2D environment 300.

FIG. 5E illustrates the image of the 2D environment, after the user hasfinalized the placement of the three-dimensional model placement grid. A3D object, square display 522, may be superimposed onto the 2Denvironment at each intersection of each row and each column. In thismanner, each intersection of a row and a column may indicate a unitlocation within the three-dimensional model placement grid. Asillustrated, a square display 522 may be superimposed onto the 2Denvironment at each intersection of each row and each column forming athree by three array of square displays 522. In some applications, therow and columns may be arranged to form composite displays composed ofindividual display units as illustrated.

FIG. 5F illustrates an example three by three array of square displays522 functioning as a composite display. The three by three array ofsquare displays may be superimposed onto 2D environment 300 such thatthe three by three array of square displays may cover a two-dimensionalobject with the 2D environment such as television 546. Also illustratedin FIG. 5F are an additional menu of virtual button icons including, butnot limited to, an element 1 virtual button icon 592 configured todisplay a visual display element, such as an image or video clip, on thethree by three array of square displays, an element 2 virtual buttonicon 594 configured to display a different visual display element on thethree by three array of square displays, an element 3 virtual buttonicon 596 configured to display another visual display element on thethree by three array of square displays, an editor virtual button icon598 configured to provide the user with editing functionality forgenerating a visual display element, a visit website virtual button icon546 configured to direct the user to an application website,manufacturer website, or other website associated with the 3D object,and a remove virtual button icon 548 configured to remove a 3D objectfrom t2D environment 300. It will be appreciated that in someembodiments, a visual display element may be displayed individually byeach square display 522 of the three by three array.

In other applications, the rows and columns functionality may beemployed to efficiently visualize any space with a regular and repeating3D object unit. For example, a user may import a 2D environment of anempty amphitheater as described above. After providing perspective andscale to the amphitheater 2D environment, the user may quickly visualizethe amphitheater with rows and columns of 3D models of a chairs. Theuser may add rows and columns of chairs to the 2D environment allowingthe user to quickly and efficiently plan the seating layout for theamphitheater including seating, aisles, and other arrangements.

In another embodiment, the rows and columns functionality may beemployed in a home decorating application. For example, a user mayimport a 2D environment of a room. After providing perspective and scaleto the room 2D environment, the user may place carpet, laminateflooring, tile flooring, or other flooring squares within the room. Inthis application, the user may quickly and efficiently place the squaresof carpet and flooring within the room, determine a quantity of thesquares of carpet of flooring to cover the room, and in some embodimentsprovide an estimated cost to install the carpet or flooring. It will beappreciated that in some embodiments, other geometric shapes such astriangles, rectangles, circles, or any other geometric shape carpet offlooring may be used.

In other embodiments, each 3D object unit within the three-dimensionalmodel placement grid may be moved collectively within the 2Denvironment. Additionally, each 3D object unit may be movedindividually.

FIG. 6A illustrates an example flow chart of method 600 for determiningthe geometry of the 2D environment 300 and positioning of the 3D objectsin the 2D environment 300. The method 600 may be performed by processinglogic that may comprise hardware (e.g., programmable logic, microcode,and so forth), software (such as computer code executable on ageneral-purpose computer system or a specifically configured computersystem), or a combination of both. The processing logic resides at theengine 200 for virtual visualization of 3D models of objects in 2Denvironment, as illustrated in FIG. 2. The method 600 may be performedby the various modules discussed above with reference to FIG. 2. Each ofthese modules may comprise processing logic.

Method 600 begins with determining geometry of the space 602 whichincludes operations 610, 620, 630, 640, and 650 and continues withpositioning 3D objects 604 including operations 660, 670, and 680. Atoperation 610 of method 600 the user 120 may determine level of theground plane, such as the level of the floor. In some examples, agyroscope or other similar device may be used to determine the level ofthe floor. At operation 610 the receiving module 206 may receive scaleand perspective data on ground plane 304 from the user. At operation620, a ray may be projected from the camera lens 312 of the user device130 and projected on the ground plane 304. At operation 630, the sensors314 in the user device 130 may be configured to calculate the angle atwhich the ray from the camera lens reaches the ground plane.

At operation 640, the user may enter information concerning the heightof the user device from the ground plane. The height of the mobiledevice may be approximated by the user or otherwise estimated such thatscale may be determined as shown at operation 650. At operation 650, thescale and perspective module 220 may calculate the space geometry of theground plane and scale based on the diagonal ray angle calculated bysensors 314 in the user device 130 and device height 330 provided by theuser 120. The scale may be locked in using information regarding theground level plan and the height of the device. In contrast to priorsystems which incorporated a known target to determine scale, noadditional target information or other details, other than the groundplane and device height (or similar height determination), are necessaryin the disclosed example to determine scale.

Method 600 continues at operation 660, for positioning 3D models ofobjects. At operation 660, the receiving module 206 may receive arequest to superimpose 3D models of objects onto the 2D environment. Asuperimposing request may include a user selecting the 3D object fromthe library 420 of 3D models of objects (in the engine for virtualvisualization of 3D models of objects in 2D environment 300), from 3Dmodels of objects saved or imported by the user, or 3D models of objectsobtained from online resources.

At operation 670, the selected 3D object may be positioned on the 2Denvironment relative to the scale and perspective of the 2D environmentdefined in operations 610, 640 and 650. As discussed above in referenceto FIG. 2, the moving module 216 may receive a request to move the 3Dobjects in the 2D environment. The request to move or reposition the 3Dobjects may include data on the selection of a direction by the user. Asexamples, the 3D objects may be moved in a vertical and/or horizontaldirection. As another example, the 3D object may be rotated about avertical, horizontal, and/or other rotational axis.

At operation 680, the user may place additional 3D objects in the 2Denvironment. For example, the user may decide to place a table in frontof a lamp in the room. If the user is not satisfied with the positioningof the additional 3D object in the 2D environment, then the method 600returns to operation 660. At operation 660, as discussed above, the usermay continue repositioning the additional 3D object relative to thescale and perspective of the 2D environment.

Optionally, method 600 may include additional operations as shown inFIG. 6B. After the 3D object is positioned in space geometry relative tothe ground plane and mobile device at operation 670, method 600 mayoptionally receive a number of rows at operation 672 and receive anumber of columns at operation 674. Each row and column may be overlaidto generate a three-dimensional model placement grid. Thethree-dimensional model placement grid may be displayed as shown in FIG.5B.

At operation 676, method 600 may optionally include positioning the 3Dobject at each intersection of each row and each column. Afterpositioning the 3D object at each intersection of each row and eachcolumn of the three-dimensional model placement grid, method 600 maycontinue to operation 680.

FIG. 7 shows an example electronic form of a computer system 700, withinwhich a set of instructions for causing a machine to perform any one ormore of the methodologies discussed herein may be executed. The machinemay be a PC, a tablet PC, a set-top box (STB), a PDA, a cellulartelephone, a web appliance, a network router, switch or bridge, or anymachine capable of executing a set of instructions (sequential orotherwise) that specify actions to be taken by that machine. In severalexample embodiments, the machine operates as a standalone device or maybe connected to other machines (e.g., networked). In a networkeddisposition, the machine may operate in the capacity of a server or aclient machine in a server-client network environment.

The example computer system 700 may be configured to include a processoror multiple processors 702 (e.g., a central processing unit (CPU), agraphics processing unit (GPU), or both), a main memory 704 and a staticmemory 706, which communicate with each other via a bus 708. Thecomputer system 700 may further include a video display unit 710 (e.g.,a liquid crystal display (LCD) or a cathode ray tube (CRT), and thelike). The computer system 700 may also include an alphanumeric inputdevice 712 (e.g., a keyboard, and the like), a cursor control device 714(e.g., a mouse, touchpad, touchscreen, and the like), a disk drive unit716 for reading computer readable medium (e.g., USB thumb drive, solidstate memory drives, and the like), a signal generation device 718(e.g., a speaker, and the like (e.g., network interface card, and thelike)), and a network interface device 720.

Further, the disk drive unit 716 may include a computer-readable medium722, on which is stored one or more sets of instructions and datastructures (such as instructions 724) embodying or utilized by any oneor more of the methodologies or functions described herein.Additionally, the instructions 724 may also reside, completely orpartially, within the main memory 704 and/or within the processors 702during execution by the computer system 700. The main memory 704 and theprocessors 702 may also constitute machine-readable media. Furtherstill, the instructions 724 may be transmitted or received over anetwork 726 via the network interface device 720 utilizing any one of anumber of well-known transfer protocols (e.g., Hyper Text TransferProtocol (HTTP)).

The computer-readable medium 722 may include a single medium or multiplemedia (e.g., a centralized or distributed database and/or associatedcaches and servers) that store the one or more sets of instructions. Theterm “computer-readable medium” may further include any medium that iscapable of storing, encoding, or carrying a set of instructions forexecution by the machine and that causes the machine to perform any oneor more of the methodologies of the present application, or that iscapable of storing, encoding, or carrying data structures utilized by orassociated with such a set of instructions. Further, “computer-readablemedium” may further include, but not be limited to, solid-statememories, optical and magnetic media, and carrier wave signals. Suchmedia may also include, without limitation, hard disks, floppy disks,flash memory cards, digital video disks, random access memory (RAM),read only memory (ROM), and the like.

It will be appreciated that the configurations and routines disclosedherein are exemplary in nature, and that these specific embodiments arenot to be considered in a limiting sense, because numerous variationsare possible. For example, the above technology can be applied tovarious 3D objects superimposed on various 2D environments. The subjectmatter of the present disclosure includes all novel and non-obviouscombinations and sub-combinations of the various systems andconfigurations, and other features, functions, and/or propertiesdisclosed herein.

The above-disclosed embodiments may be combined with one or more of theembodiments and disclosures in U.S. Provisional Patent Application No.61/992,759 entitled “METHOD FOR FORMING WALLS TO ALIGN 3D OBJECTS IN 2DENVIRONMENT”, filed on May 13, 2014, one or more of the embodiments anddisclosures in U.S. Provisional Patent Application No. 61/992,719entitled “METHOD FOR PROVIDING A PROJECTION TO ALIGN 3D OBJECTS IN 2DENVIRONMENT”, filed May 13, 2014, one or more of the embodiments anddisclosures in U.S. Provisional Patent Application No. 61/992,774entitled “METHOD FOR MOVING AND ALIGNING 3D OBJECTS IN A PLANE WITHINTHE 2D ENVIRONMENT”, filed May 13, 2014, one or more of the embodimentsand disclosures in U.S. Provisional Patent Application No. 61/992,746entitled “METHOD FOR REPLACING 3D OBJECTS IN 2D ENVIRONMENT”, filed May13, 2014, and/or one or more of the embodiments and disclosures in U.S.Provisional Patent Application 61/992,665 entitled “METHOD FORINTERACTIVE CATALOG FOR 3D OBJECTS WITHIN THE 2D ENVIRONMENT”, filed May13, 2014. The entire contents of each provisional application referencedherein are hereby incorporated by reference for all purposes. Forexample, and not as a limitation, the embodiments herein may be combinedwith the elements and features disclosed in Provisional Application No.61/992,759, in combination with one or more of the elements and featuresdisclosed in Provisional Application No. 61/992,719, in combination withone or more of the elements and features disclosed in ProvisionalApplication No. 61/992,774, in combination with one or more of theelements and features disclosed in Provisional Application No.61/992,746, and/or in combination with one or more of the elements andfeatures disclosed in Provisional Application No. 61/992,665. Thesecombinations may include one or more features disclosed in one or moreof the referenced provisional applications, including combinations ofembodiments disclosed herein with features shown in one, two, three,four, or five of the provisional applications.

Further, the entire contents of each concurrently filed application,U.S. Non-Provisional Patent application No. entitled “METHOD FOR FORMINGWALLS TO ALIGN 3D OBJECTS IN 2D ENVIRONMENT”, filed on May 12, 2015,U.S. Non-Provisional Patent application No. entitled “METHOD FORPROVIDING A PROJECTION TO ALIGN 3D OBJECTS IN 2D ENVIRONMENT”, filed May12, 2015, U.S. Non-Provisional Patent application No. entitled “METHODFOR MOVING AND ALIGNING 3D OBJECTS IN A PLANE WITHIN THE 2DENVIRONMENT”, filed May 12, 2015, U.S. Non-Provisional Patentapplication No. entitled “METHOD FOR REPLACING 3D OBJECTS IN 2DENVIRONMENT”, filed May 12, 2015, and/or U.S. Non-Provisional Patentapplication No. entitled “METHOD FOR INTERACTIVE CATALOG FOR 3D OBJECTSWITHIN THE 2D ENVIRONMENT”, filed May 12, 2015, referenced herein arehereby incorporated by reference for all purposes.

The foregoing description is illustrative of particular embodiments ofthe invention, but is not meant to be a limitation upon the practicethereof.

The foregoing discussion should be understood as illustrative and shouldnot be considered limiting in any sense. While the inventions have beenparticularly shown and described with references to preferredembodiments thereof, it will be understood by those skilled in the artthat various changes in form and details may be made therein withoutdeparting from the spirit and scope of the inventions as defined by theclaims.

The corresponding structures, materials, acts and equivalents of allmeans or steps plus function elements in the claims below are intendedto include any structure, material or acts for performing the functionsin combination with other claimed elements as specifically claimed.

Finally, it will be understood that the articles, systems, and methodsdescribed hereinabove are embodiments of this disclosure—non-limitingexamples for which numerous variations and extensions are contemplatedas well. Accordingly, this disclosure includes all novel and non-obviouscombinations and sub-combinations of the articles, systems, and methodsdisclosed herein, as well as any and all equivalents thereof.

1. A method for visualizing a three-dimensional model of an object in anenvironment, the method comprising: calculating a scale and aperspective for the three-dimensional model of the object in theenvironment based on a height of a user device relative to a groundplane of the environment and an angle formed between the ground planeand a light ray projected from the user device to the ground plane;calculating a space geometry and scale of the environment based on theheight and angle; calculating a position for the three-dimensional modelof the object in the environment based on the height and the angle forcorrectly placing the three-dimensional model of the object in theenvironment with respect to the space geometry and scale of theenvironment; superimposing the three-dimensional model of the objectonto the environment at the position with the scale and perspective; andresponsive to receiving an adjusted position of the user device,displaying the three-dimensional model of the object superimposed ontothe environment with an updated scale and updated perspective relativeto an updated space geometry and scale of the environment, wherein theupdated scale and updated perspective of the three-dimensional model andthe updated space geometry and scale of the environment are updatedaccording to the adjusted position of the three-dimensional model of theobject and the adjusted position of the user device.
 2. The method ofclaim 1, further comprising determining a level of the ground plane ofthe environment and receiving the height of the user device relative tothe ground plane.
 3. The method of claim 2, further comprisingdetermining a position of a camera used to capture the environment. 4.The method of claim 3, further comprising projecting the light ray fromthe user device to the ground plane and determining the angle formedbetween the ground plane and the light ray projected from the userdevice.
 5. The method of claim 1, further comprising importing theenvironment to be used as a background for the three-dimensional modelof the object.
 6. The method of claim 1, wherein superimposing thethree-dimensional model of the object includes: obtaining an image ofthe three-dimensional model of the object in space; and positioning thethree-dimensional model of the object within the environment in a secondposition based upon the angle formed between the ground plane and thelight ray projected from the user device.
 7. The method of claim 6,wherein positioning the three-dimensional model of the object includesrotating the three-dimensional model of the object relative to theenvironment.
 8. The method of claim 1, wherein the user device includesone of a mobile phone, a personal computer, a personal digitalassistant, a tablet personal computer, a wearable computer device, and athree-dimensional scanner.
 9. The method of claim 1, further comprising:receiving, from the user, a row request, the row request defining anumber of rows of a three-dimensional model placement grid within theenvironment; receiving, from the user, a column request, the columnrequest defining a number of columns of the three-dimensional modelplacement grid within the environment; and superimposing, based upon therow request and the column request, the three-dimensional model of theobject at each intersection of each column and each row.
 10. A systemfor visualization of a three-dimensional model of an object in anenvironment, the system comprising: a processor; and a storage device,the storage device containing instructions executable by the processor,comprising: a receiving module configured to receive one or morerequests from a user, the requests including one or more of asuperimposing request, and a request for projection of a light ray fromone or more user devices to a ground plane of the environment; a savingmodule configured to calculate and save both a space geometry and ascale of the environment, the space geometry and the scale calculatedbased on a device height of the one or more user devices relative to theground plane and an angle between the ground plane and the light rayprojected from the one or more user devices to the ground plane, whereinthe space geometry and scale of the environment are dynamically updatedresponsive to an adjusted angle between the ground plane and the lightray projected from the one or more user devices to the ground plane; anda superimposing module configured to superimpose, based on thesuperimposing request and the space geometry and scale calculated, thethree-dimensional model of the object onto the environment with a scaleand a perspective calculated based on the scale of the environment;wherein the receiving module is further configured to receive one ormore of an updated position of the one or more user devices and anupdated position of the three-dimensional model of the object within theenvironment, wherein the superimposing module is further configured toadjust the scale and the perspective of the three-dimensional model ofthe object according to the updated position of the one or more userdevices or the updated position of the three-dimensional model of theobject.
 11. The system of claim 10, wherein the receiving module isfurther configured to determine the ground plane of the environment andto receive the device height relative to the ground plane.
 12. Thesystem of claim 10, further comprising a visualizing module configuredto receive one or more of the superimposing request from the user, thesuperimposing request including data describing the three-dimensionalmodel of the object, an object replacement request, a request to adjustone or more lighting characteristics of the environment, and a scaledata and perspective data request.
 13. The system of claim 12, furthercomprising an adding scale and perspective module configured to: receivethe scale data and perspective data request from the visualizing module;receive a request from the user to change a scale and a perspective ofthe environment to change a perspective environment from a first displaycharacteristic including one or more of a first scale and a firstperspective to a second display characteristic including one or more ofa second scale and a second perspective; and display the environmentwith the second display characteristic.
 14. The system of claim 11,further comprising a moving module configured to receive a request tomove the three-dimensional model of the object within the environmentfrom a first location to a second location and superimpose thethree-dimensional model of the object onto the environment at the secondlocation.
 15. The system of claim 11, further comprising a spinningmodule configured to: receive a request to spin the three-dimensionalmodel of the object about an axis of rotation of the three-dimensionalmodel of the object from a first rotational orientation to a secondrotational orientation; and superimpose the three-dimensional model ofthe object onto the environment with the second rotational orientation.16. The system of claim 12, wherein the visualizing module is furtherconfigured to: receive a row request, the row request defining a numberof rows of a three-dimensional model placement grid within theenvironment; receive a column request, the column request defining anumber of columns of the three-dimensional model placement grid withinthe environment; and superimpose, based upon the row request and thecolumn request, the three-dimensional model of the object at eachintersection of each column and each row.
 17. A system for visualizationof a three-dimensional model of an object in an environment, the systemcomprising a processor, a storage device, and instructions on thestorage device executable by the processor, comprising: a receivingmodule configured to receive one or more requests from a user, therequests including one or more of an import request, a scale datarequest, a superimposing request, and a request for projection of alight ray from one or more user devices to a ground plane of theenvironment; an importing module configured to import, based on theimport request of the user, only a single image of the environment; avisualizing module configured to receive one or more of thesuperimposing request from the user, the superimposing request includingdata describing the three-dimensional model of the object, an objectreplacement request, a request to adjust one or more lightingcharacteristics of the environment, and a scale data and perspectivedata request; a saving module configured to save both a space geometryand scale of the environment, the space geometry and the scale of theenvironment calculated based on a device height of the one or more userdevices from a ground plane and an angle between the ground plane andthe light ray projected from the one or more user devices to the groundplane, wherein the ground level establishes the ground plane of theenvironment in a three-dimensional model of the environment, wherein thespace geometry and scale of the environment are dynamically updatedresponsive to an adjusted angle between the ground plane and the lightray projected from the one or more user devices to the ground plane; anda superimposing module configured to superimpose, based on thesuperimposing request and the ground level calculated, thethree-dimensional model of the object onto the environment with a scaleand a perspective relative to the environment calculated based on thedevice height and the angle.
 18. The system of claim 17, furthercomprising an adding scale and perspective module configured to: receivethe scale data and perspective data request from the visualizing module;receive a request from the user to change a scale and a perspective ofthe environment to change a perspective environment from a first displaycharacteristic including one or more of a first scale and a firstperspective to a second display characteristic including one or more ofa second scale and a second perspective; and display the environmentwith the second display characteristic.
 19. The system of claim 17,further comprising: a moving module configured to receive a request tomove the three-dimensional model of the object within the environmentfrom a first location to a second location and superimpose thethree-dimensional model of the object onto the environment at the secondlocation; and a spinning module configured to receive a request to spinthe three-dimensional model of the object about an axis of rotation ofthe three-dimensional model of the object from a first rotationalorientation to a second rotational orientation and superimpose thethree-dimensional model of the object onto the environment with thesecond rotational orientation.
 20. The system of claim 17, wherein thevisualizing module is further configured to: receive a row request, therow request defining a number of rows of a three-dimensional modelplacement grid within the environment; receive a column request, thecolumn request defining a number of columns of the three-dimensionalmodel placement grid within the environment; and superimpose, based uponthe row request and the column request, the three-dimensional model ofthe object at each intersection of each column and each row.